home *** CD-ROM | disk | FTP | other *** search
/ PC Media 23 / PC MEDIA CD23.iso / share / prog / gapcdr1 / gapstruc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-03  |  19.9 KB  |  476 lines

  1. /*
  2.    Copyright (C) 1988-1994 The GAP Development Company
  3.  
  4.    All Rights Reserved
  5.    
  6.    This source code is considered to be confidential information proprietary
  7.    to The GAP Development Company.  It is prohibited and punishable by law
  8.    to use or duplicate any part of this information.
  9.  
  10.  
  11.    GAPSTRUC.H
  12.  
  13.    Header file for GAPCDR modules
  14. */
  15.  
  16. #if !defined(__GAPSTRUC_H__)
  17.    #define __GAPSTRUC_H__
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif 
  22.  
  23. #if (_MSC_VER)
  24.    #pragma pack(1)                        // All structs must be packed
  25. #else
  26.    #pragma option -a1
  27. #endif
  28.  
  29.  
  30.    /******************************************************************/
  31.    /*  Record Structure For GAP'S USERS.DAT.                         */
  32.    /*                                                                */
  33.    /*  There are 4 indexes: IDX 1 = lname + fname (unique)           */
  34.    /*                       IDX 2 = lname + level (dupes allowed)    */
  35.    /*                       IDX 3 = handle (unique)                  */
  36.    /*                       IDX 4 = usernum (sequence #, unique)     */
  37.    /*                                                                */
  38.    /*  The Flags are defined as follows:                             */
  39.    /*    bit 7 - 0x80 : User wants to include Main Board in QWK      */
  40.    /*    bit 6 - 0x40 : User has QWK Network Status                  */
  41.    /*    bit 5 - 0x20 : Undefined                                    */
  42.    /*    bit 4 - 0x10 : Undefined                                    */
  43.    /*    bit 3 - 0x08 : Undefined                                    */
  44.    /*    bit 2 - 0x04 : Undefined                                    */
  45.    /*    bit 1 - 0x02 : Undefined                                    */
  46.    /*    bit 0 - 0x01 : Undefined                                    */
  47.    /******************************************************************/
  48.  
  49.    struct GAP_USER
  50.       {
  51.       char fname     [16];                // first name
  52.       char lname     [16];                // last name
  53.       char handle    [16];                // handle for MPART!
  54.       char passwd    [13];                // password
  55.       char hphone    [16];                // homephone
  56.       char bphone    [16];                // work/data phone
  57.       char subscribe  [9];                // subscription date
  58.       short  level;                       // security - up to 255
  59.       long usernum;                       // user's sequence number
  60.       long timeson;                       // times on - over 2 billion
  61.       char lastdate   [9];                // last date on - mm/dd/yy
  62.       char lasttime   [6];                // last time on - hh:mm
  63.       long ttlmins;                       // total mins on - 2+ billion
  64.       short  minutes;                     // # of minutes last call
  65.       long uploads;                       // # of uploads - 2+ billion
  66.       long downloads;                     // # of downloads - 2+ billion
  67.       long ttlbytes;                      // total bytes downloaded
  68.       long curbytes;                      // bytes downloaded this call
  69.       char privuser;                       // allow on private nodes?
  70.       char protocol   [3];                // transfer protocol
  71.       short  page;                        // page length - to 23
  72.       char lastdir    [9];                // date last looked at dir
  73.       long lastmsg;                       // last message read - 99999 max
  74.       long mesread;                       // total msgs read - 2+ billion
  75.       long mesleft;                       // total messages left
  76.       long forum_joined;                  // total forums joined
  77.       long blts_read;                     // total bulletins read
  78.       long doors_opened;                  // total doors opened
  79.       unsigned short lastconf;            // last forum in
  80.       char expert;                        // novice = N, expert = Y
  81.       char sysop;                         // sysop record, 1 = Y, 0 = N
  82.       long upbytes;                       // total bytes uploaded
  83.       short curdown;                      // total files downed today
  84.       char birthdate  [9];                // user's birthdate
  85.       char comment   [51];                // comment about user
  86.       char add1      [26];                // Company or address
  87.       char add2      [26];                // Address
  88.       char city      [26];                // City
  89.       char state     [11];                // State
  90.       char zip       [11];                // Zip
  91.       char country   [16];                // Country
  92.       char regis_date [9];                // Date 1st signed on
  93.       char enf_time;                      // Y = enforce time limit, N = dont
  94.       char editor;                        // V = visual, L = line, A = Ask
  95.       char chat;                          // Y/N if available for chat
  96.       char msgclr;                        // Y = clear screen between msgs
  97.       short newmsg;                       // > 0 if new mail in Main
  98.       short timecredit;                   // any time credits user might have
  99.       short expired;                      // Expired Subscription level
  100.       char pub_forums;                    // Y = when expired, remove from private forums
  101.       short discons;                      // number of disconnects (ALT-H)
  102.       long per_time;                      // time used during sub period
  103.       long nu;                            // to go with above at some point
  104.       unsigned char flags;                // misc status flags
  105.       char nu1        [9];                // later additions
  106.       };                                  // 424 bytes
  107.  
  108.    struct PCBSYS14                        // structure of PCBOARD.SYS    
  109.       {
  110.       char display      [2];              // display on/off -1=on,0=off  
  111.       char printer      [2];              // printer on/off -1=on,0=off  
  112.       char pagebell     [2];              // page bell      -1=on,0=off  
  113.       char calleralarm  [2];              // caller alarm   -1=on,0=off  
  114.       char sysopnext;                     // sysop on next  N,X,space    
  115.       char errcorrect   [2];              // ecc modem      -1=yes,0=no  
  116.       char color;                         // color toggle   Y,N,7        
  117.       char nu;                            // node chat, not provided     
  118.       char baud         [5];              // com port bps rate           
  119.       char userbaud     [5];              // call bps rate               
  120.       short  userrec;                     // user record position        
  121.       char userfirst   [15];              // caller's first name         
  122.       char password    [12];              // users password              
  123.       short timeon;                       // time user logged on (mins)  
  124.       short timeused;                     // time user has used that day 
  125.       char ctime        [5];              // time user logged on hh:mm   
  126.       short timeallowed;                  // allowed time in minutes     
  127.       short ttlbytes;                     // total bytes available /1024 
  128.       char forumnum;                      // forum user was in "0" = main
  129.       char nu1          [5];              // areas been in, not provided 
  130.       char nu2          [5];              // areas scanned, not provided 
  131.       short timegiven;                    // highest forum time given    
  132.       short timecredit;                   // time credit in minutes      
  133.       char nu3          [4];              // language being used         
  134.       char username    [25];              // name of caller              
  135.       short minsleft;                     // minutes left for caller     
  136.       char node;                          // node number (short int)     
  137.       char event        [5];              // event time hh:mm            
  138.       char event_active [2];              // event active  -1=yes,0=no   
  139.       char slide_event  [2];              // slide event   -1=yes,0=no   
  140.       char nu4          [4];              // memorized mess #, not prov  
  141.       char port;                          // com port, '0','1','2'       
  142.       char nu5          [2];              // not used                    
  143.       };
  144.  
  145.  
  146.    //****************************************************************
  147.    //  you will need to consult the pcb documentation for a more     
  148.    //  detailed explanation of these fields.  Note that any          
  149.    //  double or float fields will have to be converted with the     
  150.    //  appropriate C conversion function.                            
  151.    //****************************************************************
  152.  
  153.    struct PCBUSER14                       // structure for PCB USERS     
  154.       {
  155.       char name         [25];             // users full name             
  156.       char city         [24];             // users home town             
  157.       char passwd       [12];             // users password              
  158.       char bphone       [13];             // users data phone number     
  159.       char hphone       [13];             // users home phone number     
  160.       char lastdate      [6];             // last date on as yymmdd (sic)
  161.       char lasttime      [5];             // last time on as hh:mm       
  162.       char expert;                        // expert mode                 
  163.       char protocol;                      // protol being used           
  164.       char nu;                            // not used                    
  165.       char lastdir       [6];             // last directory date yymmdd  
  166.       char level;                         // users level as short int    
  167.       short  timeson;                     // # of times on               
  168.       char page;                          // page length as short int    
  169.       short  uploads;                     // # of uploads                
  170.       short  downloads;                   // # of downloads              
  171.       double curdown;                     // current down bytes          
  172.       char comment1     [30];             // comment                     
  173.       char comment2     [30];             // comment                     
  174.       short elap;                         // elapsed time                  
  175.       char regisdate     [6];             // registration date yymmdd    
  176.       char exp_level;                     // expired security level      
  177.       char lastconf;                      // last forum in               
  178.       char forum_regis   [5];             // you figure it out cause     
  179.       char forum_exp     [5];             // these fields are definately 
  180.       char forum_scan    [5];             // NOT bit maps!               
  181.       double downbytes;                   // total downbytes             
  182.       double upbytes;                     // total upbytes               
  183.       char deleted;                       // deleted user                
  184.       float lastmsg;                      // last msg read               
  185.       float lastmsg1    [39];             // last msg read in forums     
  186.       char nu1          [15];             // not used                    
  187.       };                                  // 400 bytes                   
  188.  
  189.  
  190. #define YES 1                             // used when calling show_mess()   
  191. #define NO  0
  192.  
  193.  
  194. #define TAB  9
  195. #define ESC  0x1b
  196.  
  197. #define F1  59 + 0x100
  198. #define F2  60 + 0x100
  199. #define F3  61 + 0x100
  200. #define F4  62 + 0x100
  201. #define F5  63 + 0x100
  202. #define F6  64 + 0x100
  203. #define F7  65 + 0x100
  204. #define F8  66 + 0x100
  205. #define F9  67 + 0x100
  206. #define F10 68 + 0x100
  207. #define F11 171 + 0x100
  208. #define F12 172 + 0x100
  209. #define CF10 103 + 0x100
  210.  
  211. #define HOME_KEY  71 + 0x100
  212. #define END_KEY   79 + 0x100
  213. #define PGUP      73 + 0x100
  214. #define PGDN      81 + 0x100
  215. #define CUR_LEFT  75 + 0x100
  216. #define CUR_RIGHT 77 + 0x100
  217. #define CUR_UP    72 + 0x100
  218. #define CUR_DOWN  80 + 0x100
  219. #define AF1       104+ 0x100
  220. #define AF2       105+ 0x100
  221. #define AF3       106+ 0x100
  222. #define AF4       107+ 0x100
  223. #define AF5       108+ 0x100
  224. #define AF6       109+ 0x100
  225. #define AF7       110+ 0x100
  226. #define AF8       111+ 0x100
  227. #define AF9       112+ 0x100
  228. #define AF10      113+ 0x100
  229.  
  230. #define CTRLK   11
  231. #define CTRLX   24
  232.  
  233. #define ON 1
  234. #define OFF 0
  235. #define TIMEOUT -10
  236.  
  237. //  ASCII Protocol Characters
  238.  
  239. #define NUL 0
  240. #define SOH 1
  241. #define STX 2
  242. #define ETX 3
  243. #define EOT 4
  244. #define ACK 6
  245. #define DLE 0x10
  246. #define DC1 0x11
  247. #define DC2 0x12
  248. #define DC3 0x13
  249. #define DC4 0x14
  250. #define NAK 0x15
  251. #define ETB 0x17
  252. #define CAN 0x18
  253. #define XON 0x11
  254. #define XOFF 0x13
  255.  
  256.  
  257.    // prototypes for GAPCDR functions 
  258.  
  259.    extern  void __pascal check_rip(void);
  260.    extern  void __pascal ansi(char *ansicolor);
  261.    extern  void __pascal backspace(short howmany);
  262.    extern  void __pascal do_chat(void );
  263.    extern  void __pascal update_clock(void );
  264.    extern  void __pascal clear_scrn(void );
  265.    extern  void __pascal elap_time(void );
  266.    extern  void __pascal time_left(void );
  267.    extern  void __pascal empty(char *str,short len);
  268.    extern  FILE * __pascal read_cnf(char *fname);
  269.    extern  short __pascal read_doorsys(void );
  270.    extern  short __pascal init_door(void );
  271.    extern  void __pascal no_carrier(void );
  272.    extern  void __pascal leave(short how);
  273.    extern  short __pascal read_gapuser(char *path );
  274.    extern  short __pascal write_gapuser(char *path );
  275.    extern  short __pascal getakey(void );
  276.    extern  void __pascal get_string(char *fld);
  277.    extern  void __pascal more(void );
  278.    extern  void __pascal nl(char howmany);
  279.    extern  void __pascal pagesysop(void );
  280.    extern  void __pascal pause(void );
  281.    extern  short __pascal read_pcbsys(void );
  282.    extern  short __pascal write_pcbsys(void );
  283.    extern  short __pascal read_pcbuser(char *path);
  284.    extern  short __pascal write_pcbuser(char *path );
  285.    extern  void __pascal write_score(char *datfile,unsigned long score);
  286.    extern  short __pascal read_score(char *datfile,char *message);
  287.    extern  void __pascal show_file(char *filename);
  288.    extern  short __pascal send_ripfile(char *filename);
  289.    extern  void __pascal show_mess(char *vstring,char flag,char newline);
  290.    extern  void __pascal set_status(short update);
  291.    extern  void __pascal time_credit(short how);
  292.    extern  char *trim(char *str);
  293.    extern void __pascal cls(void);
  294.    extern void __pascal cls_all(void);
  295.    extern void  __pascal dv_pause(void);
  296.    extern short __pascal dv_here(void);
  297.  
  298.  
  299.    // prototypes for private GAPCDR functions 
  300.  
  301.    extern  void __pascal init_com(void );
  302.    extern  void __pascal wrap_word(void );
  303.    extern  void __pascal putkey(short c);
  304.    extern  short __pascal get_random(short low,short high);
  305.    extern void __pascal make_sound(unsigned short f, short dur);
  306.    extern short __pascal getkeyc(void);
  307.    extern short __pascal access1(char *fname);
  308.    extern short __pascal strwrd(const char *strng,const char *sub_strng);
  309.  
  310.    extern void __pascal gapputs(char *string);
  311.     extern void __pascal gapputc(short ch);
  312.    extern void __pascal lputs(char *str);
  313.    extern void __pascal lputc(short ch);
  314.    extern void __pascal curson(void);
  315.    extern void __pascal cursoff(void);
  316.    extern void __pascal timer(unsigned short tics);
  317.  
  318.    extern void __pascal init_ansi(void);
  319.    extern void __pascal fix_color(void);
  320.  
  321.    extern void __pascal set_int10(void);
  322.    extern void __pascal rest_int10(void);
  323.    extern void __pascal set_cord(unsigned char topr, unsigned char topc, unsigned char botr, unsigned char botc);
  324.    extern void __pascal set_attr(unsigned char forg, unsigned char back);
  325.    extern void __pascal get_attr(void);
  326.    extern void __pascal save_screen(short row1, short col1, short row2, short col2, unsigned short savemem);
  327.    extern void __pascal restore_screen(short row1, short col1, short row2, short col2, unsigned short savemem);
  328.    extern void __pascal set_int29(void);
  329.    extern void __pascal rest_int29(void);
  330.  
  331.  
  332.    extern void __pascal set_cbreak(void);
  333.    extern void __pascal rest_cbreak(void);
  334.  
  335.  
  336.    // prototypes for Communications routines
  337.  
  338.    short  __pascal setport(short  bufsize,short  irq,short  base);
  339.    void   __pascal reset_port(void);
  340.    short  __pascal init_port(short  parity,short  data);
  341.  
  342.    extern  short __pascal ckeypress(void );
  343.    extern  short __pascal comgetc(void );
  344.    extern  void __pascal __near is_carrier(void );
  345.    extern  void __pascal clr_buf(void );
  346.    extern  short __pascal comgetd(short secs);
  347.    extern  void __pascal computc(unsigned char ch);
  348.    extern  void __pascal computs(const unsigned char *str);
  349.    extern  void __pascal computb(const unsigned char *str, short length);
  350.    extern  void __pascal dtr(short how);
  351.    extern  void __pascal rts(short how);
  352.    extern  short __pascal iscd(void );
  353.    extern  short __pascal isring(void );
  354.    extern  short __pascal rxempty(void );
  355.    extern  short __pascal __near check_port(void );
  356.  
  357.  
  358.    // DigiBoard specific routines
  359.  
  360.  
  361.    extern void __pascal setdigi(void);
  362.  
  363.    // called by regular COM routines to set the Digi Flag to 0
  364.  
  365.  
  366.    extern short __pascal dsetup(short base,short port,short chnl,long baud,short parity,short data,short stop);
  367.  
  368.    // used to setup Direct DigiBoard Programming support
  369.    // RESETDIG.EXE must have already been run in the AUTOEXEC.BAT or this
  370.    // function will fail
  371.  
  372.    // base   = Memory Window
  373.    // port   = I/O Port
  374.    // chnl   = DigiBoard Channel # (1 - 8)
  375.    // baud   = baudrate (long)
  376.    // parity = 0 = None, 1 = Odd, 2 = Even
  377.    // data   = 6, 7, or 8
  378.    // stop   = 1 or 2
  379.  
  380.    // Return 0 = success
  381.    //        1 = no board
  382.    //        2 = Can't talk to board
  383.    //        3 = Invalid Parameter
  384.    //        4 = EPROM too old
  385.  
  386.  
  387.    extern short __pascal int14set(short chnl,long baud,short parity,short data,short stop);
  388.  
  389.    // used to setup DigiBoard via INT14/EBIOS Device Driver
  390.    // The Device Driver must be installed and configured for EBIOS Support
  391.    // or this function will fail
  392.  
  393.    // chnl   = DigiBoard Channel # (usually 4 - 11)
  394.    // baud   = baudrate (long)
  395.    // parity = 0 = None, 1 = Odd, 2 = Even
  396.    // data   = 6, 7, or 8
  397.    // stop   = 1 or 2
  398.  
  399.    // Return 0 = success
  400.    //        1 = Device Driver Not installed or board not installed
  401.    //        2 = EBIOS not configured
  402.    //        3 = Invalid Parameter
  403.  
  404.  
  405.    // all other Digi Functions work with either Direct Programming or
  406.    // Int14/EBIOS
  407.  
  408.  
  409.    extern void __pascal dmodem(long baud,short parity,short data,short stop);
  410.  
  411.    // used to change online modem parameters
  412.    // normally not used with a BBS, but with Term program
  413.  
  414.    // baud   = baudrate (long)
  415.    // parity = 0 = None, 1 = Odd, 2 = Even
  416.    // data   = 6, 7, or 8
  417.    // stop   = 1 or 2
  418.  
  419.  
  420.    extern void __pascal drestore(void);
  421.  
  422.    // Resets The Modem attached to the DigiBoard
  423.    // don't call if you want DTR to stay up
  424.  
  425.  
  426.    extern short __pascal dgtxfree(void);
  427.  
  428.    // get number of free bytes in Transmit Buffer
  429.    // returns 0 = No characters, otherwise number of bytes
  430.  
  431.  
  432.    extern short __pascal dmodstat(void);
  433.  
  434.    // Returns Modem Status in AL
  435.  
  436.  
  437.    extern void __pascal dclrtx(void);
  438.  
  439.    // Flushes the Digi Transmit Buffer
  440.    // no need to call if user has "Send Break To Clear Modem" set on
  441.    // since the Break Routine automatically clears the xmit buffer
  442.  
  443.  
  444.    // Fossil specific routines
  445.  
  446.    extern short __pascal fos_setport(short port);
  447.  
  448.    // Tells the Fossil we want to use the port
  449.  
  450.    extern void __pascal fos_resetport(void);
  451.  
  452.    // Tells the Fossil we are done with the port
  453.  
  454.    extern short __pascal fos_initport(long baud,short parity,short data,short stop);
  455.  
  456.    // Sets the Fossil Baud, Parity, Data, and Stop bits
  457.  
  458.    extern void __pascal fos_clrtx(void);
  459.  
  460.    // Clears the Fossil Transmit Buffer
  461.    // no need to call if user has "Send Break To Clear Modem" set on
  462.    // since the Break Routine automatically clears the xmit buffer
  463.  
  464.  
  465. #if (_MSC_VER)
  466.    #pragma pack()                         // restore default packing
  467. #else
  468.    #pragma option -a.                     // restore default packing
  469. #endif
  470.  
  471. #ifdef __cplusplus
  472. }
  473. #endif 
  474.  
  475. #endif                                    // __GAPSTRUC_H__ defined
  476.